home *** CD-ROM | disk | FTP | other *** search
/ Your Choice 3 / Your Choice Software Collection 3.iso / prgmming / pcl4pb42 / login.bas < prev    next >
BASIC Source File  |  1994-09-27  |  4KB  |  184 lines

  1. '
  2. '  Login.BAS Example Program
  3. '
  4.  
  5. $ERROR ALL ON
  6. $LIB ALL OFF
  7.  
  8. DEFINT A-Z
  9.  
  10. $INCLUDE "PCL4PB.BI"
  11. $INCLUDE "MODEM_IO.BI"
  12. $INCLUDE "DEFINES.BI"
  13.  
  14. $LINK "PCL4PB.OBJ"
  15. $LINK "MODEM_IO.PBU"
  16.  
  17.  
  18.  DECLARE FUNCTION MyExit(BYVAL Port AS INTEGER) AS INTEGER
  19.  
  20.  DECLARE FUNCTION Login(BYVAL Port   AS INTEGER, _
  21.                               Send   AS STRING,  _
  22.                         BYVAL Pace   AS INTEGER, _
  23.                               Expect AS STRING,  _
  24.                         BYVAL Tics   AS INTEGER) AS INTEGER
  25.  
  26.  %FALSE = 0
  27.  %TRUE  = NOT %FALSE
  28.  %ESC   = 27
  29.  
  30.  'declare variables
  31.  DIM Buffer(256+16) AS BYTE
  32.  DIM BufSeg         AS WORD
  33.  DIM Port           AS INTEGER
  34.  DIM I              AS INTEGER
  35.  DIM L              AS INTEGER
  36.  DIM Code           AS INTEGER
  37.  DIM LibVer         AS INTEGER
  38.  DIM BaudCode       AS INTEGER
  39.  DIM AnyKey         AS STRING
  40.  DIM RATES(12)      AS STRING
  41.  DIM PARMS          AS STRING
  42.  DIM ARG1           AS STRING
  43.  DIM ARG2           AS STRING
  44.  
  45.  RATES$(1)  = "300"
  46.  RATES$(2)  = "600"
  47.  RATES$(3)  = "1200"
  48.  RATES$(4)  = "2400"
  49.  RATES$(5)  = "4800"
  50.  RATES$(6)  = "9600"
  51.  RATES$(7)  = "19200"
  52.  RATES$(8)  = "38400"
  53.  RATES$(9)  = "57600"
  54.  RATES$(10) = "115200"
  55.  
  56.  PARMS$ = RTRIM$(COMMAND$)
  57.  I = INSTR(PARMS$, " ")
  58.  IF I < 1 THEN
  59.    PRINT "  Usage: Login <Port> <BaudRate>"
  60.    PRINT "Example: Login 1 9600"
  61.    END 1
  62.  END IF
  63.  
  64.  L = LEN(PARMS$)
  65.  ARG1$ = LEFT$(PARMS$, I - 1)
  66.  ARG2$ = LTRIM$(RIGHT$(PARMS$, L - I))
  67.  BaudCode = -1
  68.  
  69.  'Get COM port
  70.  Port = VAL(ARG1$) - 1
  71.  
  72.  'Get baud code
  73.  FOR I = 1 TO 10
  74.    IF RATES$(I) = ARG2$ THEN
  75.       BaudCode = I - 1
  76.       EXIT FOR
  77.    END IF
  78.  NEXT I
  79.  
  80.  'Verify good baud rate
  81.  IF BaudCode = -1 THEN
  82.    PRINT "Cannot recognize baud rate "; ARG2$
  83.    END
  84.  END IF
  85.  
  86. 'Reset port
  87.  BufSeg = 1 + VARSEG(Buffer(0)) + (VARPTR(Buffer(0)) \ 16)
  88.  Code = SioRxBuf(Port, BufSeg, %Size256)
  89.  IF Code < 0 THEN
  90.    PRINT "Error "; Code; " returned from SioRxBuf()"
  91.    Code = SioError(Code)
  92.    END
  93.  END IF
  94.  Code = SioReset(Port, BaudCode)
  95.  CLS
  96.  IF Code < 0 THEN
  97.    PRINT "Error "; Code; " returned from SioReset()"
  98.    Code = SioError(Code)
  99.    END
  100.  END IF
  101.  
  102.  PRINT "Login 9/25/94"
  103.  PRINT " "
  104.  LibVer = SioInfo(ASC("V"))
  105.  PRINT "Library Version: "; LibVer \ 16; ".";
  106.  PRINT LibVer - 16 * (LibVer \ 16)
  107.  
  108.  Code = SioDTR(Port, %SET.LINE)
  109.  Code = SioRTS(Port, %SET.LINE)
  110.  
  111.  IF %AT.COMMAND.SET THEN
  112.    PRINT "ready"
  113.  ELSE
  114.    PRINT "AT.COMMAND.SET must be 1. See DEFINES.BI"
  115.    STOP
  116.  END IF
  117.  
  118.  'send "AT" to modem & expect "OK" back
  119.  IF NOT Login(Port, "!AT!", 5, "OK", 180) THEN
  120.    Code = MyExit(Port)
  121.  END IF
  122.  
  123.  'initialize modem & expect "OK" back
  124.  IF NOT Login(Port, "AT E1 S7=60 S11=60 V1 X1 Q0 S0=1!", 5, "OK", 90) THEN
  125.    Code = MyExit(Port)
  126.  END IF
  127.  
  128.  'send "ATDT1,205,880,9748" & expect "CONNECT" back
  129.  IF NOT Login(Port, "ATDT1,205,880,9748!", 5, "CONNECT", 1092) THEN
  130.    Code = MyExit(Port)
  131.  END IF
  132.  
  133.  'send CR to get prompt
  134.  Code = SioPutc(Port,13)
  135.  PRINT "Entering TERMINAL loop..."
  136.  DO
  137.    'Look at incoming serial
  138.    Code = SioGetc(Port, 1)
  139.    IF Code = 13 THEN
  140.      PRINT
  141.    ELSEIF Code >= &H20 THEN
  142.      PRINT CHR$(Code);
  143.    END IF
  144.    'Anything to send
  145.    AnyKey$ = INKEY$
  146.    IF AnyKey$ <> "" THEN Code = SioPutc(Port, ASC(AnyKey$))
  147.    IF AnyKey$ = CHR$(%ESC) THEN EXIT DO
  148.  LOOP
  149.  
  150.  PRINT "User typed ESC..."
  151.  Code = MyExit(Port)
  152.  
  153.  END
  154.  
  155.  FUNCTION Login(BYVAL Port   AS INTEGER, _
  156.                       Send   AS STRING,  _
  157.                 BYVAL Pace   AS INTEGER, _
  158.                       Expect AS STRING,  _
  159.                 BYVAL Tics   AS INTEGER) AS INTEGER
  160.  
  161.    DIM RC AS INTEGER
  162.  
  163.    RC = ModemSendTo(Port, Pace, Send)
  164.  
  165.    IF ModemWaitFor(Port, Tics, %FALSE, Expect) THEN
  166.      PRINT
  167.      Login = %TRUE
  168.    ELSE
  169.      PRINT Expect; " not received"
  170.      Login = %FALSE
  171.    END IF
  172.  
  173. END FUNCTION
  174.  
  175. FUNCTION MyExit(BYVAL Port AS INTEGER) AS INTEGER
  176.  
  177.    DIM Code AS INTEGER
  178.  
  179.    Code = SioDone(Port)
  180.  
  181. END FUNCTION
  182.  
  183. END
  184.